The present invention relates to the field of memory control/interface. More specifically, the present invention relates to an apparatus, method, and system for utilizing write buffers to improve the performance of data transfer between a memory controller and memory devices.
As computer devices and systems continue to advance and become more complex, effective and efficient management of the interface between different types of devices and components in any given system has become more and more critical in system design and implementation in order to achieve better system performance at component and system levels. With respect to memory control and interface, data transfer between one component (e.g., a processor) and another component (e.g., system memory devices) is typically controlled by a memory controller or a memory control unit that is responsible for servicing memory transactions (e.g., read, write, etc.) that target the system memory devices. Typically, the memory controller and the memory devices operate according to certain data transfer and memory control protocol/specification that is designed to control and service memory transactions between the memory controller and the memory devices. For example, memory transactions that target memory devices such as synchronous dynamic random access memory (SDRAM) devices are controlled by an SDRAM memory controller that operate according to SDRAM specification which includes specification for read, write and other memory operations. To service various types of memory transactions, a typical memory controller generates or issues specific memory commands (e.g., read, write, activate, refresh, etc.) to the memory devices to instruct the memory devices to perform certain operations according to the specific memory commands issued by the memory controller.
In certain systems, however, the memory controller used in the systems may be designed by one entity according to a specific specification and the memory devices may be designed by another entity according to a different specification. For example, the memory controller used in a given system may be a RAMBUS(copyright) memory controller designed by RAMBUS(copyright), Inc. of Mountain View, Calif., and the memory devices used in the system may be SDRAM devices. In this case, an interface between the memory controller and the memory devices is used to allow the memory controller and the memory devices to communicate and interact with each other. In general, the interface (also called the translator herein) translates the memory commands issued by the memory controller according to one protocol/specification into commands according to another protocol/specification that can be understood by the memory devices. Likewise, the interface or translator receives the data from the memory devices according to the protocol/specification used by the memory devices and transmit the data to the memory controller according to the protocol/specification used by the memory controller. For example, a translator/interface unit can be used to facilitate the data transfer between a RAMBUS(copyright) memory controller and SDRAM devices. In this type of configuration, performance may not be optimized due to the different protocols/specifications that are specifically designed for certain types of devices. In other instances, even when a memory controller (e.g., a RAMBUS(copyright) memory controller) is designed to work specifically with certain memory devices (e.g., SDRAM devices), certain characteristics associated with the respective components may still cause poor utilization of the memory buses. For example, the RAMBUS(copyright) memory controller defers write data transfers on a write command until the read latency of the RAMBUS(copyright) type memory device (RDRAM) is met. This feature allows the RAMBUS(copyright) memory controller to maintain high bus utilization for RAMBUS(copyright) type memory devices. However, in a system in which the RAMBUS(copyright) memory controller/interface communicates with SDRAMs via a translator unit, the deferring of write data transfer by the RAMBUS) memory controller results in poor bus utilization because SDRAM devices require the write data to be sent with the write command. This RAMBUS(copyright) feature thus results in under-utilization of the SDRAM and the RAMBUS(copyright) memory bus because write commands must be delayed until the write data can be sent from the RAMBUS(copyright) memory controller to the SDRAM via the translator.